package com.ygqh.baby.service;

import com.ygqh.baby.ao.DataStatus;
import com.ygqh.baby.ao.QueryInfo;
import com.ygqh.baby.ao.ResultSet;
import com.ygqh.baby.po.YgSearchWords;

import java.util.Date;
import java.util.List;

/**
 * @author Ss
 */
public interface YgSearchWordsService {

	List<YgSearchWords> find();

	int findCount();

	YgSearchWords findById(Long id);

	int deleteSoft(Long[] ids);

	int deleteSoft(Long id);

	int save(YgSearchWords ygSearchWords);

	int update(YgSearchWords ygSearchWords);

	int saveOrUpdate(YgSearchWords ygSearchWords);

	/**
	 * 查询搜索词
	 *
	 * @param queryInfo 分页
	 * @param words     搜索词
	 * @param minHot    最低热度
	 * @param status    数据状态
	 * @return
	 */
	ResultSet<YgSearchWords> search(QueryInfo queryInfo, String words, Long minHot, DataStatus status);

	/**
	 * 后模糊查询有效搜索词
	 *
	 * @param words 搜索词
	 * @param limit 限定数
	 * @return
	 */
	List<String> findValidWords(String words, Integer limit);

	/**
	 * 获取指定状态搜索词信息
	 *
	 * @param words  搜索词
	 * @param status 数据状态
	 * @return
	 */
	YgSearchWords findWords(String words, DataStatus status);

	/**
	 * 异步更新到数据库
	 *
	 * @param record 搜索词信息
	 */
	void addAsync(YgSearchWords record);

	/**
	 * 更新搜索词到数据库
	 *
	 * @param record 搜索词信息
	 */
	void addRecord(YgSearchWords record);

	List<YgSearchWords> findByStatus(Date minUpdateTime, DataStatus... status);

	/**
	 * 批量修改搜索词数据状态
	 *
	 * @param searchWordsList 搜索词集
	 * @return
	 */
	int updateStatus(List<YgSearchWords> searchWordsList);
}
